\section{Test}

Die Tests haben wir kontinuierlich während der Implementierung durchgeführt.
Dies soll heißen, dass wir immer dann auf korrekte Funktionalität des Moduls/Skripts
getestet haben, wenn beispielsweise ein Modul oder ein Skript fertiggestellt wurde.

\subsection{Testszenarien}

\subsubsection{Kontinuierliche Erstellbarkeit eines Pucks}

Bevor die Schnittstelle zum Arduino fertig war, haben wir dies
in OpenSim intern getestet, indem wir einen Button in der OpenSim-Welt
erstellt haben, der die gleiche Funktionalität besitzt, wie Knopf A auf dem
Breadboard. (siehe Abbildung \ref{fig:adetail})\\
Später haben wir dies direkt mittels betätigen des A Knopfs erledigt. 
Es konnten auf beiden Wegen kontinuierlich Pucks generiert werden.

\subsubsection{Starten und Stoppen des Fließbandes}

Dieser Fall wurde mit der Vorgehensweise, wie im obigen Testszenario, bereits abgedeckt.
Dies ist so, weil wenn der Sensor auf dem Fließband merkt, dass ein Puck zum
transport bereit liegt,
dieser automatisch zum Ende des Fließbandes transportiert wird. Ist der Puck am 
Ende des Fließbandes angekommen, dann ist dieser auch liegen geblieben.

\subsubsection{Greifen des Pucks}

Hier soll der Schwenkarm den Puck logischerweise erst aufnehmen, wenn sich
dieser in Ausgangsstellung befindet und ein Puck zur Aufnahme 
bereit liegt. Außerdem muss der Schwenkarm im eingeschalteten Zustand sein.\\
Hier haben wir zunächst getestet, ob der Puck aufgenommen wird, wenn alle
oben genannten Kriterien erfüllt sind. Wir haben also einen Puck am Ende
des Fließbandes positioniert und den Schwenkarm in Ausgangstellung gebracht.
Anschließend wurde die manuelle Steuerung des Schwenkarms aktiviert und der Puck 
wurde aufgenommen.\\
Anschließend haben wir getestet, ob der Puck auch nicht aufgenommen wird, wenn
der Schwenkarm abgeschaltet ist, welches dieser auch nicht tat.\\
Zuletzt haben wir getestet, ob der Schwenkarm den Puck nur dann aufnimmt, wenn
dieser sich in Ausgangsstellung befindet. Dazu haben wir einfach die manuelle Steuerung 
aktiviert und den Schwenkarm auf eine beliebige Position gebracht. Der Puck wurde nur
aufgenommen, wenn sich der Schwenkarm wieder in Ausgangstellung bewegt hat.

\subsubsection{Ablegen des Pucks}

Analog zu \texttt{Greifen des Pucks} musste sich der Schwenkarm an der Endstelle befinden
und ein Puck musste vom Schwenkarm gehalten werden.\\
Zunächst haben wir dem Schwenkarm einen Puck greifen lassen und auf die Endstelle bewegt.
Der Puck wurde wie gewollt abgelegt.

\subsubsection{Kommunikation zwischen Arduino und OpenSim}

Um zu testen, ob wir die korrekten Signale vom Arduino erhalten und ob sich
das Arduino korrekt verhält, wenn man Signale zum Arduino sendet, haben wir
zwischenzeitig ein kleines Tool geschrieben. Mit diesem Tool konnten wir
Signale, wie besipielsweise welche LED eingeschaltet werden soll, zum Arduino senden.\\
Zusätzlich haben wir mit diesem Tool unser Hand-Shake-Protokoll getestet, welches
wir entwickelt haben, damit wir den Arduino von anderen Geräten auseinander halten 
konnten, die ebenfalls mit USB am PC angeschlossen waren.
Außerdem haben wir die Signale, die das Arduino sendet, mit dem Tool auslesen können.
Auf diesem Wege haben wir die Korrektheit der Werte des Potentiometers und den
Zustand der Anlage feststellen können. Also ob das MPS eingschaltet ist beziehungsweise 
der Schwenkarm im manuellen Steuerungsmodus ist oder eben nicht.

\subsubsection{Korrekte Funktionsweise der LEDs}

Dies haben wir getestet, indem wir den vollen Produktionsablauf des MPS ausgeführt haben.
Mittels Sichtung haben wir beobachtet, ob sich die LEDs der Sensoren eingeschaltet haben,
wenn entsprechende Sensoren betätigt worden sind.\\
Die LEDs zum Anzeigen, in welchem Zustand sich das MPS befindet, haben wir durch betätigen
der Knöpfe getestet. Besipielsweise ist LED 2 eingeschaltet, wenn das MPS abgeschaltet ist
und geht dann aus, wenn man das MPS einschaltet.

\subsubsection{Korrekte Zustandsüberführungen bei Betätigen der Knöpfe}

Dieses Szenario haben wir wie bei \texttt{Korrekte Funktionsweise der LEDs} getestet.
Durch betätigen der Knöpfe A beziehungsweise B haben die LEDs 1 bis 4 ihren Zustand geändert.
Beispielsweise kann man den Schwenkarm nicht auf manuelle Steuerung schalten, wenn das MPS 
gar nicht eingeschaltet ist.
